"""
自定义过滤器【掌握】

- 解释：当系统提供的过滤器满足不了需求的时候，需要自定义
- 自定义过滤器有两种格式：
    - 1. 先定义好函数，再将函数添加到系统默认的过滤器列表中
        - def 函数名(): pass
        - app.add_template_filter(函数名, '过滤器名字')

    - 2. 定义函数的时候，直接使用系统过滤器进行装饰
        @app.template_filter('过滤器名字')
        def 函数名():
            pass

- 案例：
    - 1. 获取列表偶数和
    - 2. 翻转列表
"""
from flask import Flask, render_template

app = Flask(__name__)


# 1. 先定义好函数，再将函数添加到系统默认的过滤器列表中
def get_evenNumber(list):  # 获取偶数和
    sum = 0
    for i in list:
        if i % 2 == 0:
            sum += i
    return sum


# 参数1：关联的函数的名字；参数2：在模板中使用的过滤器的名字
app.add_template_filter(get_evenNumber, "evenNumber")


# 2. 定义函数的时候，直接使用系统过滤器进行装饰
@app.template_filter("list_reverse")
def list_reverse(list):  # 列表反转
    list.reverse()  # 直接返回的结果是 None
    return list


@app.route("/")
def helloworld():
    return render_template("Ademo05_custom_filter.html")


if __name__ == "__main__":
    app.run(debug=True)
